0 'XMSMRGTR. ** Delete this line before merging to pgm XMASGRTR ! **
   Activate STOP in L 150 to try pgm by itself, but deactivate before merging!
1  '`XMAS GReetings and TReeS': comb'd XMASDEMO, TREE & merged  TRSTREE 94 10 01
2   'chg'd Moon(501,3,5,6), Fence(543,7,50,4), Snow(500-9,555), Tree, 92 12 22
100 CLEAR: CLS: PRINT CHR$(23): PRINT
105 PRINT " H A P P Y   H O L I D A Y S !": PRINT" "; STRING$(29,131)
110 D=400: GOSUB 650
115 PRINT @460, "from your": PRINT: PRINT "         LOVING"
120 PRINT"           Husband"
125 D=500: GOSUB 650
130 PRINT: PRINT"          L A N C E ";: D=200: GOSUB 650
135  FOR R=1 TO 04
140   PRINT STRING$(11,8);: GOSUB 650: PRINT " L A N C E ";: GOSUB 650
145  NEXT R
146 DATA 32,47,42,47,50,57,43,47,60,66,39,47,69,95,42,47,-1,-1,-1,-1,32,47,44,50,57,45,69,95,45,-1,-1,-1,39,40,41,54,54,41,86,87,42,-1,-1,-2
147 DATA 61,7,81,37,74,31,58,20,63,14,87,29,51,37,94,35,45,24,51,17,71,12,33,34,58,35,30,37,80,27,79,20,66,9,56,11,71,36,50,35,39,33
148 DATA 40,29,69,24,73,17,53,27,63,29,82,33,96,37,66,9,87,29,61,7,81,37,74,31,58,20,63,14,87,29,51,37,94,35,45,24,51,17,71,12,33,34,58,35,30,37,80,27
149 DATA 79,20,66,9,56,11,71,36,50,35,39,33,40,29,69,24,73,17,53,27,63,29,82,33,96,37,66,9,87,29,-1,-1,-1,-1
150 GOSUB 277: Y=15360:'STOP
155 READ X,Y: IF X<>0 THEN POKE 15360+X,Y: GOTO 155
160 D=1500: GOSUB 650
200 DATA 13,160,14,176,15,176,16,176,17,176,18,176
201 DATA 72,160,73,184,74,156,75,143,76,131,77,131,78,131
202 DATA 79,131,80,131,81,131,82,131,83,143,84,188
203 DATA 136,139,137,143,138,189,139,176,140,144,147,160
204 DATA 148,176,149,176,150,176,154,176,155,176,156,176
205 DATA 157,176,158,176,159,144,161,176,162,176,163,176
206 DATA 168,176,169,176,170,176,171,176,175,176,177,176
207 DATA 178,176,179,176,183,176,184,176,185,176,186,176
208 DATA 187,144,196,176,197,152,198,140,199,180,200,144
209 DATA 203,130,204,131,205,139,206,173,207,180,208,144
210 DATA 209,160,210,191,211,141,212,140,213,140,214,142
211 DATA 215,129,216,184,217,159,218,129,220,160,221,184
212 DATA 222,143,224,139,225,173,226,176,227,146,228,131
213 DATA 230,188,231,151,232,129,235,186,236,149,238,184
214 DATA 239,159,240,131,242,184,243,159,244,129,246,139
215 DATA 247,173,248,176,249,144,250,130,251,131,252,131
216 DATA 258,168,259,183,260,144,269,160,270,184,271,191
217 DATA 272,133,273,130,274,143,275,140,276,140,277,135
218 DATA 278,129,279,130,280,139,281,140,282,140,283,134
219 DATA 284,143,285,133,287,131,288,140,289,140,290,142
220 DATA 291,135,294,139,295,141,296,140,297,140,298,135
221 DATA 299,129,300,136,301,142,302,131,304,136,305,190,306,179,313,187,314,159
222 DATA 323,130,324,131,325,143,326,140,327,188,328,188
223 DATA 329,188,330,188,331,188,332,143,333,135,334,131,341,176,342,176,343,152,344,140
224 DATA 345,140,346,140,347,140,348,140,349,140,350,140
225 DATA 351,140,352,140,353,140,354,140,355,140,356,140
226 DATA 357,140,358,140,359,140,360,140,361,140,362,140
227 DATA 363,140,364,140,365,140,366,140,367,140,368,140
228 DATA 369,140,370,140,371,140,372,140,373,140,374,140,375,140,376,135,377,131,386,160
229 DATA 404,175,405,176,406,144,423,160
230 DATA 424,184,425,132,429,160,433,160,434,176,435,140
231 DATA 436,140,437,129,451,131,452,172,453,180,454,188
232 DATA 455,140,456,143,457,131,458,131,459,131,460,175
233 DATA 461,191,470,131,471,131,472,141,473,140,474,140
234 DATA 475,140,476,140,477,140,478,140,479,140,480,140
235 DATA 481,140,482,140,483,140,484,140,485,140,486,190
236 DATA 487,159,488,141,489,140,490,132,491,136,492,143
237 DATA 493,129,494,140,495,140,496,131,497,131,514,176
238 DATA 515,190,516,143,517,129,519,131,520,131,521,131
239 DATA 522,131,523,131,524,131,527,187,528,157,529,134
240 DATA 530,131,531,139,532,132,533,168,534,188,535,179
241 DATA 536,179,537,187,538,132,540,168,541,188,542,179
242 DATA 543,179,544,179,545,157,548,160,549,190,550,135
243 DATA 553,160,554,190,555,135,557,184,558,159,559,134,560,131
244 DATA 561,131,561,171,562,189,564,160,565,188,566,135
245 DATA 567,163,568,191,569,151,570,168,571,183,572,179
246 DATA 573,131,574,139,575,132,577,191,578,191,582,176
247 DATA 583,140,584,134,585,131,586,131,587,131,588,188
248 DATA 589,160,590,191,591,135,597,175,598,181,599,176
249 DATA 600,184,601,140,604,175,605,181,606,176,607,184,608,140
250 DATA 611,184,612,159,613,129,616,184,617,159,618,129,619,176,620,190,621,135,623,160,624,184
251 DATA 625,143,626,129,627,136,628,191,629,177
252 DATA 630,172,631,191,632,135,636,130,637,191,638,148
253 DATA 641,191,642,191,646,130,647,131,648,140,649,140
254 DATA 650,140,651,190,652,159,653,140,654,140,655,140
255 DATA 656,140,657,140,658,180,659,144,668,168,669,144
256 DATA 675,139,676,141,677,140,678,140,688,131,689,131
257 DATA 693,184,694,159,695,129,699,176,700,158,701,135
258 DATA 705,130,706,139,707,173,708,180,709,176,710,176
259 DATA 711,176,712,176,713,184,714,158,715,135,716,129
260 DATA 720,172,721,144,723,162,724,187,725,180,726,176,727,176
261 DATA 728,176,729,176,730,176,731,176,732,176,733,178
262 DATA 734,185,735,188,736,176,737,176,738,176,739,176
263 DATA 740,176,741,176,741,176,742,176,743,176,744,176,745,176
264 DATA 746,176,747,176,748,176,749,176,750,176,751,176
265 DATA 752,176,753,176,754,176,755,176,756,190,757,183
266 DATA 758,176,759,140,760,140,761,134,762,131,780,176
267 DATA 781,140,782,140,783,134,784,131,785,139,786,167
268 DATA 787,177,788,176,789,143,796,160,797,152,800,131
269 DATA 801,173,802,140,803,140,804,164,805,176,806,176
270 DATA 807,176,808,176,809,176,810,176,811,176,812,176
271 DATA 813,176,814,176,815,152,816,140,817,140,818,131
272 DATA 819,129,842,136,843,191,844,145,856,176,857,176
273 DATA 858,184,859,142,860,131,908,130,909,131,910,137
274 DATA 911,140,912,140,913,140,914,140,915,140,916,140
275 DATA 917,140,918,131,919,131,0,0
276 GOTO 300' TRSTREE. Activate STOP in L 150 if run for tryout
277 CLS: X1=63: X2=X1: Y=2
278 MS$="776982828932887765833233"
279  FOR I=X1 TO X2: SET(I,Y): NEXT: X=X+1: X1=X1-1: X2=X2+1: Y=Y+1: IF X<>37 THEN 279
280 READ X1,X2,Y1,Y2: IF X1=-1 THEN 282
281  FOR I=X1 TO X2: SET(I,Y1): NEXT: Y1=Y1+1: IF Y1>Y2 THEN 280 ELSE 281
282 READ X1,X2,Y: IF X1<>-1 THEN 284 ELSE PRINT @5,;
283  FOR I=1 TO 24 STEP 2: MS=VAL(MID$(MS$,I,2)): PRINT CHR$(MS);: NEXT: GOTO 285
284  FOR I=X1 TO X2: RESET(I,Y): NEXT: GOTO 282
285 READ X1,X2,Y: IF X1=-1 THEN 287
286  FOR I=X1 TO X2: RESET(I,Y): NEXT: Y=Y+1: IF Y<=47 THEN 286 ELSE 285
287 SET(37,40): SET(38,40): SET(39,41): SET(40,41): SET(41,40): SET(42,40): SET(53,41): SET(54,42): SET(55,41): SET(84,40): SET(85,40): SET(86,41): SET(87,41): SET(88,40): SET(89,40)
288 IF J<210 THEN READ X,Y,X1,Y1 ELSE READ Z1,Z2,Z3,Z4: CLS: RETURN
289 IF X=-1 THEN 293
290 IF POINT(X,Y) THEN RESET(X,Y) ELSE SET(X,Y): RESET(X1,Y1)
291 IF NOT POINT(X,Y) THEN SET(X1,Y1) ELSE RESET(X1,Y1)
292 J=J+1: GOTO 288
293 RESTORE
294 READ D: IF D=-2 THEN 288 ELSE 294
300 ' SNOW SCENE
305 DIM S(23,2): Y1=15360
310  FOR L=1 TO 16: READ N
315   FOR Z=1 TO N: READ Y
320    IF Y<192 THEN POKE Y1,Y: Y1=Y1+1: GOTO 340
330     FOR Y2=1 TO (Y-192): POKE Y1,32: Y1=Y1+1: NEXT
340   NEXT Z
345  NEXT L
350  FOR N=1 TO 10: NEXT
360  FOR N=1 TO 23: READ P,Q: S(N,0)=P: S(N,1)=Q: NEXT
370  FOR R=1 TO 25
380   FOR N=1 TO 23: P=S(N,0): Q=S(N,1): RESET(P,Q): NEXT
390   FOR T=1 TO 23: P=S(T,0): Q=S(T,1): SET(P,Q): NEXT
400  NEXT R
500 DATA 9,197,128,215,128,209,172,198,128,202
501 DATA 19,200,128,160,184,190,191,189,180,144,128,128,215
502 DATA 128,195,160,186,189,176,207
503 DATA 25,200,128,191,191,191,191,191,191,191,128,128,128
504 DATA 207,128,201,176,190,191,191,191,141,176,199,128,197
505 DATA 27,194,128,197,128,130,139,175,191,159,135,129,128
506 DATA 128,197,128,211,135,128,176,191,191,191,189,188,180,144,203
507 DATA 27,196,128,206,168,203,128,199,128,196,188,191,191
508 DATA 191,191,191,191,191,191,143,188,188,180,176,144,194,128,194
509 DATA 30,194,160,186,198,128,199,168,191,176,198,128,197
510 DATA 198,176,188,188,191,191,191,191,191,191,191,191,189
511 DATA 176,196,130,138,197
512 DATA 43,128,160,184,190,183,179,202,176,188,191,191,191
513 DATA 191,188,176,200,186,176,195,168,143,131,131,131,131
514 DATA 176,187,191,191,191,191,191,191,191,191,191,191,188
515 DATA 188,188,176,176,196
516 DATA 58,128,129,184,191,191,191,191,188,176,195,176,188
517 DATA 143,131,175,191,191,191,191,188,176,178,131,135,194
518 DATA 160,140,172,191,191,191,189,176,144,128,176,176,190
519 DATA 191,135,191,191,143,191,191,191,191,191,191,135,131
520 DATA 131,143,131,131,129,130,196
521 DATA 60,140,175,191,191,191,191,172,188,176,129,194,130
522 DATA 128,184,190,191,175,191,191,191,191,178,179,179,139
523 DATA 128,160,184,188,191,191,191,131,143,140,140,142,179
524 DATA 179,179,179,188,140,140,128,172,179,143,191,191,191
525 DATA 191,189,188,180,196,160,188,190,191
526 DATA 64,134,187,191,191,191,191,189,180,178,139,132,176
527 DATA 188,183,179,188,188,191,191,191,191,191,191,191,191
528 DATA 189,191,189,188,191,143,179,188,128,143,143,143,179
529 DATA 179,179,188,188,188,191,191,140,143,143,143,143,131,131,131,131,131,131,131,179
530 DATA 179,188,191,191,143,191
531 DATA 54,191,191,191,191,191,191,191,191,191,191,191,191
532 DATA 191,191,191,191,191,191,191,191,191,191,191,191,143
533 DATA 191,143,179,188,188,143,143,179,188,191,143,143,131
534 DATA 131,131,203,176,188,191,191,191,191,191,159,143,179
535 DATA 188,128,188
536 DATA 50,191,191,191,191,191,191,191,191,191,191,191,191
537 DATA 191,191,143,191,191,143,143,143,179,179,179,188,128
538 DATA 188,191,143,179,188,191,143,131,207,176,190,191,191
539 DATA 191,143,131,143,179,188,190,191,143,179,128,179
540 DATA 49,191,191,143,191,191,191,143,143,143,179,179,179
541 DATA 188,188,128,188,188,191,143,143,143,179,179,179,128
542 DATA 179,188,191,191,143,129,208,138,191,191,191,191,191
543 DATA 191,128,191,140,179,153,172,191,191,191,191
544 DATA 45,179,179,128,188,188,188,191,191,143,143,143,179
545 DATA 179,179,128,188,188,188,191,191,191,191,191,191,191
546 DATA 191,143,135,129,212,131,191,191,191,188,176,188,179
547 DATA 143,191,157,166,145,162,187
548 DATA 41,143,143,128,179,179,188,188,188,191,191,191,191
549 DATA 191,191,191,191,191,191,191,143,143,143,131,131,216
550 DATA 160,184,191,191,131,131,191,143,143,179,188,182,155
551 DATA 133,138,175
552 DATA 35,191,191,188,159,143,143,143,143,143,131,131,131
553 DATA 131,131,129,221,176,176,188,188,191,191,191,188,194
554 DATA 188,191,143,143,179,185,190,189,190,191
555 DATA 125,14,86,37,70,6,78,41,22,15,82,31,49,9,89,43,10,2,72,35,64,12,42,46,108,2,6,9,63,40,81,14,50,45,56,17,70,45,119,6,92,33,84,3,59,1
600 GOTO 700
650   FOR D1=1 TO D: NEXT D1: RETURN
700  CLEAR 1000: DIM S(225): P$=CHR$(43): S$=CHR$(42): A=-3
705 C$=CHR$(191)+CHR$(128)+CHR$(191)+CHR$(128)+CHR$(191)
710  FOR L=1 TO 12: A=A+2: PRINT CHR$(30)
715   FOR W=32+(64*L)-((A/2)+.5) TO 32+(64*L)+((A/2)+.5)
720    PRINT @W, S$: Y=Y+1: S(Y)=W
730   NEXT W: PRINT CHR$(30)
735  NEXT L
745 PRINT @800, CHR$(182) @864, CHR$(143);
750 PRINT @842, "* * *" @881, "* * *" @914, "M E R R Y  C H R I S T M A S";
755 PRINT @906, C$ @945, C$ @960, CHR$(30) @969, STRING$(46,131);
760  FOR I=1 TO 40: RANDOM: X=RND(140)+1: Y=RND(140)+1: Z=RND(140)+1
765   IF X=111 THEN X=X-RND(109)
770   IF Y=111 THEN Y=Y-RND(109)
775   IF Z=111 THEN Z=Z-RND(109)
780   IF S(X)=800 OR S(Y)=800 OR S(Z)=800 THEN 805
785   PRINT @842, P$ @844, S$ @846, P$ @881, S$ @883, P$ @885, S$;
790   PRINT @S(1), P$ @S(X), P$ @S(Y), P$ @S(Z), P$;: GOSUB 900 
795   PRINT @842, S$ @844, P$ @846, S$ @881, P$ @883, S$ @885, P$;
800   PRINT @S(1), S$ @S(X), S$ @S(Y), S$ @S(Z), S$;: GOSUB 900 
805  NEXT I
810 K$=INKEY$: IF K$="Q" THEN CLS: END
850 GOTO 100
900  FOR T=1 TO 30: NEXT: RETURN
